import {
  IsString,
  IsEnum,
  IsBoolean,
  IsArray,
  IsOptional,
  MaxLength,
} from 'class-validator';
import {
  WorkCategoryEnum,
  MediaTypeEnum,
  WorkStatusEnum,
} from '../entities/work.entity';

/**
 * 创建作品 DTO
 */
export class CreateWorkDto {
  /**
   * 作品标题（最大长度200字符）
   */
  @IsString()
  @MaxLength(200)
  title: string;

  /**
   * 作品描述
   */
  @IsString()
  description: string;

  /**
   * 作品类别（美食/养生/旅游）
   */
  @IsEnum(WorkCategoryEnum)
  category: WorkCategoryEnum;

  /**
   * 作品状态（草稿/已发布/已归档），默认为草稿
   */
  @IsEnum(WorkStatusEnum)
  @IsOptional()
  status?: WorkStatusEnum;

  /**
   * 是否公开，默认为公开
   */
  @IsBoolean()
  @IsOptional()
  isPublic?: boolean;

  /**
   * 媒体类型（图片/视频）
   */
  @IsEnum(MediaTypeEnum)
  mediaType: MediaTypeEnum;

  /**
   * 图片URL列表（图片类型作品必填，至少一张）
   */
  @IsArray()
  @IsString({ each: true })
  @IsOptional()
  imagesUrls?: string[];

  /**
   * 视频URL（视频类型作品必填）
   */
  @IsString()
  @IsOptional()
  videoUrl?: string;

  /**
   * 视频封面URL
   */
  @IsString()
  @IsOptional()
  videoCover?: string;

  /**
   * 作品标签列表
   */
  @IsArray()
  @IsString({ each: true })
  @IsOptional()
  tags?: string[];

  /**
   * 地点名称（适用于旅游作品）
   */
  @IsString()
  @IsOptional()
  location?: string;

  /**
   * 纬度（配合地点使用）
   */
  @IsOptional()
  latitude?: number;

  /**
   * 经度（配合地点使用）
   */
  @IsOptional()
  longitude?: number;
}
